package ru.amse.tsyganov.jumleditor.view;

import ru.amse.tsyganov.jumleditor.model.activity.ActionState;
import ru.amse.tsyganov.jumleditor.model.activity.Decision;
import ru.amse.tsyganov.jumleditor.model.activity.FinalState;
import ru.amse.tsyganov.jumleditor.model.activity.ForkJoinState;
import ru.amse.tsyganov.jumleditor.model.activity.InitialState;
import ru.amse.tsyganov.jumleditor.model.activity.Transition;
import ru.amse.tsyganov.jumleditor.model.collaboration.Actor;
import ru.amse.tsyganov.jumleditor.model.collaboration.Instance;
import ru.amse.tsyganov.jumleditor.model.collaboration.Message;
import ru.amse.tsyganov.jumleditor.model.common.Edge;
import ru.amse.tsyganov.jumleditor.model.common.GraphModel;
import ru.amse.tsyganov.jumleditor.model.common.State;
import ru.amse.tsyganov.jumleditor.view.activity.ActionStateView;
import ru.amse.tsyganov.jumleditor.view.activity.DecisionView;
import ru.amse.tsyganov.jumleditor.view.activity.FinalStateView;
import ru.amse.tsyganov.jumleditor.view.activity.ForkJoinStateView;
import ru.amse.tsyganov.jumleditor.view.activity.InitialStateView;
import ru.amse.tsyganov.jumleditor.view.activity.TransitionView;
import ru.amse.tsyganov.jumleditor.view.collaboration.ActorView;
import ru.amse.tsyganov.jumleditor.view.collaboration.InstanceView;
import ru.amse.tsyganov.jumleditor.view.collaboration.MessageView;
import ru.amse.tsyganov.jumleditor.view.common.EdgeView;
import ru.amse.tsyganov.jumleditor.view.common.GraphView;
import ru.amse.tsyganov.jumleditor.view.common.StateView;

public class ViewVisitor {

	public void visitActivityGraphView(GraphView<? extends GraphModel> g) {}
	
	public void visitStateView(StateView<? extends State> s) {}
	
	public void visitActionStateView(ActionStateView<? extends ActionState> s) {
		visitStateView(s);
	}

	public void visitDecisionView(DecisionView<? extends Decision> s) {
		visitStateView(s);
	}
	
	public void visitFinalStateView(FinalStateView<? extends FinalState> s) {
		visitStateView(s);
	}
	
	public void visitForkJoinStateView(ForkJoinStateView<? extends ForkJoinState> s) {
		visitStateView(s);
	}
	
	public void visitInitialStateView(InitialStateView<? extends InitialState> s) {
		visitStateView(s);
	}
	
	public void visitActorView(ActorView<? extends Actor> s) {
		visitStateView(s);
	}
	
	public void visitInstanceView(InstanceView<? extends Instance> s) {
		visitStateView(s);
	}
	
	public void visitTransitionView(TransitionView<? extends Transition> t) {
		visitEdgeView(t);
	}
	
	public void visitMessageView(MessageView<? extends Message> t) {
		visitEdgeView(t);
	}
	
	public void visitEdgeView(EdgeView<? extends Edge> t) {}
}
